package com.wjm.xml.Jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

/**
 * Data:2022年08月02日
 * Author:wjm
 * Content: Jsoup解析器解析xml文档
 *
 *
 * 通过Document对象获取Element对象的方法：
 *         public Element getElementById(String id)
 *                 根据ID的属性值获取唯一的element对象
 *
 *         public Elements getElementsByTag(String tagName)
 *                 根据标签名称获取元素对象集合
 *
 *         public Elements getElementsByAttribute(String key)
 *                 通过属性名称获取元素对象集合
 *
 *         public Elements getElementsByAttributeValue(String key, String value)
 *                 根据对应的属性名和属性值获取元素对象集合
 *
 *         Elements相当于是一个ArrayList<Element>集合
 *
 *
 *  其他方法：
 *         public String text()   获取文本内容
 *         public String html()   获取标签体所有内容（包括字标签的字符串内容）
 *         public String attr(String key)  根据属性名称获取属性值获取文本内容
 *
 */
public class JsoupDemo2 {
    public static void main(String[] args) throws IOException {
        //获取document对象
        Document doc = Jsoup.parse(new File("./Java-API-Xml/src/com/wjm/xml/Jsoup/emplist.xml"),"utf-8");

        //根据标签名称获取元素对象集合
        Elements names = doc.getElementsByTag("name");
        System.out.println("names集合长度："+names.size());
        System.out.println("-----------------------------------");

        //获取names集合中的第3个element对象
        Element name3 = names.get(2);
        //根据属性名称获取属性值获取文本内容
        System.out.println("names集合中的第3个element对象的number属性值为"+name3.attr("number"));
        System.out.println("----------------------------------------");

        //通过属性名称获取元素对象集合
        Elements ids = doc.getElementsByAttribute("id");
        System.out.println("ids集合长度："+ids.size());
        System.out.println("-----------------------------------");

        //根据对应的属性名和属性值获取元素对象集合
        Elements num = doc.getElementsByAttributeValue("number","123");
        System.out.println("num对象集合:"+num);
        System.out.println("-----------------------------------");



        //根据ID的属性值获取唯一的element对象
        Element element = doc.getElementById("3");
        System.out.println(element);
        System.out.println("-------------------------------------------");
        System.out.println("id=3的对象的text方法："+element.text());
        System.out.println("id=3的对象的html方法"+element.html());




    }
}
